cmake_minimum_required(VERSION 3.6.0)

project(EasyDeepLearningInferenceLive_Pylon_Console VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(CMAKE_VERSION VERSION_LESS "3.7.0")
  set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()

if(CMAKE_CXX_COMPILER_IS_GNUCXX)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
endif()

# include libraries

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
link_libraries(Threads::Threads)

set (OPEN_EVISION_CPP_INCLUDE_WIN "C:/Program Files/Euresys/Open eVision 26.02/Include")
set (OPEN_EVISION_CPP_INCLUDE_LINUX "/opt/euresys/Open_eVision_26_02/include")

include_directories(${OPEN_EVISION_CPP_INCLUDE_LINUX})
link_libraries(dl)

set(PYLON_ROOT "/opt/pylon5")
add_library(pylonbase SHARED IMPORTED)
set_property(TARGET pylonbase PROPERTY IMPORTED_LOCATION ${PYLON_ROOT}/lib64/libpylonbase.so)
add_library(pylonutility SHARED IMPORTED)
set_property(TARGET pylonutility PROPERTY IMPORTED_LOCATION ${PYLON_ROOT}/lib64/libpylonutility.so)
add_library(GenApi_gcc_v3_1_Basler_pylon SHARED IMPORTED)
set_property(TARGET GenApi_gcc_v3_1_Basler_pylon PROPERTY IMPORTED_LOCATION ${PYLON_ROOT}/lib64/libGenApi_gcc_v3_1_Basler_pylon.so)
add_library(GCBase_gcc_v3_1_Basler_pylon_v5_1 SHARED IMPORTED)
set_property(TARGET GCBase_gcc_v3_1_Basler_pylon_v5_1 PROPERTY IMPORTED_LOCATION ${PYLON_ROOT}/lib64/libGCBase_gcc_v3_1_Basler_pylon_v5_1.so)

# define executable

add_executable(EasyDeepLearningInferenceLive_Pylon_Console
    EasyDeepLearningInferenceLiveMain.cpp
    ProcessingHandler.cpp
    CameraHandler.cpp
    CameraHandler.h
    ProcessingHandler.h
)
target_compile_definitions(EasyDeepLearningInferenceLive_Pylon_Console PRIVATE USE_PYLON)
target_include_directories(EasyDeepLearningInferenceLive_Pylon_Console PRIVATE ${PYLON_ROOT}/include)
target_link_libraries(EasyDeepLearningInferenceLive_Pylon_Console PRIVATE pylonbase pylonutility GenApi_gcc_v3_1_Basler_pylon GCBase_gcc_v3_1_Basler_pylon_v5_1)
